import java.util.PriorityQueue;

/**
 * 力扣面试题17.16 最小K个数
 *
 */
class Solution10 {
    public int[] smallestK(int[] arr, int k) {
        if (arr == null || k <= 0){
            return new int[0];
        }
        //建立优先级队列
        //因为优先级队列默认是小根堆，所以顶根必定是最小的，我们只需要依次取出根顶就行了
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
        for (int i = 0; i < arr.length; i++) {
            priorityQueue.offer(arr[i]);
        }
        int nums[] = new int[k];
        for (int i = 0; i < k; i++) {
            nums[i] = priorityQueue.poll();
        }
        return nums;
    }
}
